package com.mall4j.cloud.product.feign;

import com.mall4j.cloud.api.product.feign.SpuFeignClient;
import com.mall4j.cloud.api.product.vo.SkuVO;
import com.mall4j.cloud.api.product.vo.SpuAndSkuVO;
import com.mall4j.cloud.api.product.vo.SpuVO;
import com.mall4j.cloud.common.response.ServerResponseEntity;
import com.mall4j.cloud.product.service.SkuService;
import com.mall4j.cloud.product.service.SpuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class SpuFeignController implements SpuFeignClient {

    @Autowired
    private SpuService spuService;

    @Autowired
    private SkuService skuService;

    @Override
    public ServerResponseEntity<SpuVO> getById(Long spuId) {
        return ServerResponseEntity.success(spuService.getBySpuId(spuId));
    }

    @Override
    public ServerResponseEntity<SpuAndSkuVO> getSpuAndSkuById(Long spuId, Long skuId) {
        SpuAndSkuVO spuAndSkuVO = new SpuAndSkuVO();
        SpuVO spuVO = spuService.getBySpuId(spuId);
        SkuVO skuVO = skuService.getById(skuId);
        spuAndSkuVO.setSpu(spuVO);
        spuAndSkuVO.setSku(skuVO);
        return ServerResponseEntity.success(spuAndSkuVO);
    }

    @Override
    public ServerResponseEntity<List<SpuVO>> getSpusBySpuIds(List<Long> spuIds, String spuName, Integer isFailure) {
        List<SpuVO>  spuVOS = new ArrayList<>();
        for (Long spuId : spuIds) {
            SpuVO spuVO = spuService.getBySpuId(spuId);
            String name = spuVO.getName();
            Integer status = spuVO.getStatus();
            if(!name.equals("")){
                if(name.equals(spuName) && status == isFailure ){
                    spuVOS.add(spuVO);
                }
            }else {
                if(status == isFailure){
                    spuVOS.add(spuVO);
                }
            }
        }
        return ServerResponseEntity.success(spuVOS);
    }
}
